/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gob.cgr.sgrh.ejb.entidad;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author MICROSOF
 */
@Entity
@Table(name = "convocatoria")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Convocatoria.findAll", query = "SELECT c FROM Convocatoria c"),
    @NamedQuery(name = "Convocatoria.findByIdConvocatoria", query = "SELECT c FROM Convocatoria c WHERE c.idConvocatoria = :idConvocatoria"),
    @NamedQuery(name = "Convocatoria.findByNumeroConvocatoria", query = "SELECT c FROM Convocatoria c WHERE c.numeroConvocatoria = :numeroConvocatoria"),
    @NamedQuery(name = "Convocatoria.findByFechaInicio", query = "SELECT c FROM Convocatoria c WHERE c.fechaInicio = :fechaInicio"),
    @NamedQuery(name = "Convocatoria.findByFechaFin", query = "SELECT c FROM Convocatoria c WHERE c.fechaFin = :fechaFin"),
    @NamedQuery(name = "Convocatoria.findByEstadoFase", query = "SELECT c FROM Convocatoria c WHERE c.estadoFase = :estadoFase"),
    @NamedQuery(name = "Convocatoria.findByEstadoAprobado", query = "SELECT c FROM Convocatoria c WHERE c.estadoAprobado = :estadoAprobado")})
public class Convocatoria implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @NotNull
    @Column(name = "ID_CONVOCATORIA")
    private Integer idConvocatoria;
    @Basic(optional = false)
    @NotNull
    @Column(name = "NUMERO_CONVOCATORIA")
    private int numeroConvocatoria;
    @Column(name = "FECHA_INICIO")
    @Temporal(TemporalType.DATE)
    private Date fechaInicio;
    @Column(name = "FECHA_FIN")
    @Temporal(TemporalType.DATE)
    private Date fechaFin;
    @Size(max = 2)
    @Column(name = "ESTADO_FASE")
    private String estadoFase;
    @Size(max = 2)
    @Column(name = "ESTADO_APROBADO")
    private String estadoAprobado;
    @JoinColumn(name = "ID_REQUERIMIENTO", referencedColumnName = "ID_REQUERIMIENTO")
    @ManyToOne(optional = false)
    private RequerimientoPersonal idRequerimiento;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idConvocatoria")
    private List<PostulanteConvocatoria> postulanteConvocatoriaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idConvocatoria")
    private List<BaseConcurso> baseConcursoList;

    public Convocatoria() {
    }

    public Convocatoria(Integer idConvocatoria) {
        this.idConvocatoria = idConvocatoria;
    }

    public Convocatoria(Integer idConvocatoria, int numeroConvocatoria) {
        this.idConvocatoria = idConvocatoria;
        this.numeroConvocatoria = numeroConvocatoria;
    }

    public Integer getIdConvocatoria() {
        return idConvocatoria;
    }

    public void setIdConvocatoria(Integer idConvocatoria) {
        this.idConvocatoria = idConvocatoria;
    }

    public int getNumeroConvocatoria() {
        return numeroConvocatoria;
    }

    public void setNumeroConvocatoria(int numeroConvocatoria) {
        this.numeroConvocatoria = numeroConvocatoria;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public String getEstadoFase() {
        return estadoFase;
    }

    public void setEstadoFase(String estadoFase) {
        this.estadoFase = estadoFase;
    }

    public String getEstadoAprobado() {
        return estadoAprobado;
    }

    public void setEstadoAprobado(String estadoAprobado) {
        this.estadoAprobado = estadoAprobado;
    }

    public RequerimientoPersonal getIdRequerimiento() {
        return idRequerimiento;
    }

    public void setIdRequerimiento(RequerimientoPersonal idRequerimiento) {
        this.idRequerimiento = idRequerimiento;
    }

    @XmlTransient
    public List<PostulanteConvocatoria> getPostulanteConvocatoriaList() {
        return postulanteConvocatoriaList;
    }

    public void setPostulanteConvocatoriaList(List<PostulanteConvocatoria> postulanteConvocatoriaList) {
        this.postulanteConvocatoriaList = postulanteConvocatoriaList;
    }

    @XmlTransient
    public List<BaseConcurso> getBaseConcursoList() {
        return baseConcursoList;
    }

    public void setBaseConcursoList(List<BaseConcurso> baseConcursoList) {
        this.baseConcursoList = baseConcursoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idConvocatoria != null ? idConvocatoria.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Convocatoria)) {
            return false;
        }
        Convocatoria other = (Convocatoria) object;
        if ((this.idConvocatoria == null && other.idConvocatoria != null) || (this.idConvocatoria != null && !this.idConvocatoria.equals(other.idConvocatoria))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "gob.cgr.sgrh.ejb.entidad.Convocatoria[ idConvocatoria=" + idConvocatoria + " ]";
    }
    
}
